package com.cencat.merchant.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.cencat.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 路线发票实体类
 * @author cencat
 * @since 2025-01-20
 */
@TableName("route_invoice")
@Data
@EqualsAndHashCode(callSuper = false)
public class RouteInvoice extends BaseEntity {

    /**
     * 发票ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 租户ID
     */
    @TableField("tenant_id")
    private Long tenantId;

    /**
     * 路线ID
     */
    @TableField("route_id")
    private Long routeId;

    /**
     * 商家ID
     */
    @TableField("merchant_id")
    private Long merchantId;

    /**
     * 发票编号
     */
    @TableField("invoice_no")
    private String invoiceNo;

    /**
     * 发票类型
     */
    @TableField("invoice_type")
    private String invoiceType;

    /**
     * 发票金额
     */
    @TableField("invoice_amount")
    private BigDecimal invoiceAmount;

    /**
     * 税率
     */
    @TableField("tax_rate")
    private BigDecimal taxRate;

    /**
     * 税额
     */
    @TableField("tax_amount")
    private BigDecimal taxAmount;

    /**
     * 发票状态
     */
    @TableField("status")
    private String status;

    /**
     * 审核状态
     */
    @TableField("audit_status")
    private String auditStatus;

    /**
     * 认证状态
     */
    @TableField("certify_status")
    private String certifyStatus;

    /**
     * 开具时间
     */
    @TableField("issue_time")
    private LocalDateTime issueTime;

    /**
     * 开具人
     */
    @TableField("issue_user")
    private String issueUser;

    /**
     * 作废时间
     */
    @TableField("void_time")
    private LocalDateTime voidTime;

    /**
     * 作废人
     */
    @TableField("void_user")
    private String voidUser;

    /**
     * 作废原因
     */
    @TableField("void_reason")
    private String voidReason;

    /**
     * 红冲时间
     */
    @TableField("red_rush_time")
    private LocalDateTime redRushTime;

    /**
     * 红冲人
     */
    @TableField("red_rush_user")
    private String redRushUser;

    /**
     * 红冲原因
     */
    @TableField("red_rush_reason")
    private String redRushReason;

    /**
     * 审核时间
     */
    @TableField("audit_time")
    private LocalDateTime auditTime;

    /**
     * 审核人
     */
    @TableField("audit_user")
    private String auditUser;

    /**
     * 审核备注
     */
    @TableField("audit_remark")
    private String auditRemark;

    /**
     * 认证时间
     */
    @TableField("certify_time")
    private LocalDateTime certifyTime;

    /**
     * 认证人
     */
    @TableField("certify_user")
    private String certifyUser;

    /**
     * 发票抬头
     */
    @TableField("invoice_title")
    private String invoiceTitle;

    /**
     * 纳税人识别号
     */
    @TableField("taxpayer_id")
    private String taxpayerId;

    /**
     * 开户行
     */
    @TableField("bank_name")
    private String bankName;

    /**
     * 银行账号
     */
    @TableField("bank_account")
    private String bankAccount;

    /**
     * 地址电话
     */
    @TableField("address_phone")
    private String addressPhone;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建人ID
     */
    @TableField("create_by")
    private Long createBy;

    /**
     * 更新人ID
     */
    @TableField("update_by")
    private Long updateBy;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 删除标记（0-未删除，1-已删除）
     */
    @TableLogic
    @TableField("is_deleted")
    private Integer isDeleted;
}